package pe.com.certicom.moviles.service;

import java.util.List;

import org.apache.commons.collections.CollectionUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;

import pe.com.certicom.moviles.model.beans.Accesorio;
import pe.com.certicom.moviles.model.beans.AccesorioExample;
import pe.com.certicom.moviles.model.beans.CentroCosto;
import pe.com.certicom.moviles.model.beans.CentroCostoExample;
import pe.com.certicom.moviles.model.beans.Estado;
import pe.com.certicom.moviles.model.beans.EstadoExample;
import pe.com.certicom.moviles.model.beans.Marca;
import pe.com.certicom.moviles.model.beans.MarcaExample;
import pe.com.certicom.moviles.model.beans.MotivoDevolucion;
import pe.com.certicom.moviles.model.beans.MotivoDevolucionExample;
import pe.com.certicom.moviles.model.beans.MotivoReposicion;
import pe.com.certicom.moviles.model.beans.MotivoReposicionExample;
import pe.com.certicom.moviles.model.beans.Operador;
import pe.com.certicom.moviles.model.beans.OperadorExample;
import pe.com.certicom.moviles.model.dao.AccesorioDAO;
import pe.com.certicom.moviles.model.dao.CentroCostoDAO;
import pe.com.certicom.moviles.model.dao.EstadoDAO;
import pe.com.certicom.moviles.model.dao.MarcaDAO;
import pe.com.certicom.moviles.model.dao.MotivoDevolucionDAO;
import pe.com.certicom.moviles.model.dao.MotivoReposicionDAO;
import pe.com.certicom.moviles.model.dao.OperadorDAO;

@Service("catalogoService")
public class CatalogoServiceImpl implements CatalogoService {

	
	@Autowired
	private AccesorioDAO accesorioDAO;
	
	@Autowired
	private CentroCostoDAO centroCostoDAO;
	
	@Autowired
	private EstadoDAO estadoDAO;
	
	@Autowired
	private MarcaDAO marcaDAO;
	
	@Autowired
	private OperadorDAO operadorDAO;
	
	@Autowired
	private MotivoDevolucionDAO motivoDevolucionDAO;
	
	@Autowired
	private MotivoReposicionDAO motivoReposicionDAO;
	
	
	@Override
	public List<Accesorio> listarAccessorios() {
		// TODO Auto-generated method stub
		AccesorioExample parametros = new AccesorioExample();
		parametros.setOrderByClause("des_accesorio");
		return accesorioDAO.selectByExample(parametros);
	}

	@Override
	public List<CentroCosto> listarCentrosDeCostos() {
		// TODO Auto-generated method stub
		CentroCostoExample parametros = new CentroCostoExample();
		parametros.setOrderByClause("des_centro_costo");
		return centroCostoDAO.selectByExample(parametros);
	}

	@Override
	public List<Estado> listarEstados() {
		EstadoExample parametros = new EstadoExample();
		parametros.setOrderByClause("des_estado");
		return estadoDAO.selectByExample(parametros);
	}

	@Override
	public List<Marca> listarMarcas() {
		MarcaExample parametros = new MarcaExample();
		parametros.setOrderByClause("des_marca");
		return marcaDAO.selectByExample(parametros);
	}

	@Override
	public List<Operador> listarOperadores() {
		// TODO Auto-generated method stub
		OperadorExample parametros = new OperadorExample();
		parametros.setOrderByClause("des_proveedor");
		return operadorDAO.selectByExample(parametros);
	}

	@Override
	public List<MotivoDevolucion> listarMotivosDevolucion() {
		// TODO Auto-generated method stub
		MotivoDevolucionExample parametros = new MotivoDevolucionExample();
		parametros.setOrderByClause("des_motivo_devolucion");
		return motivoDevolucionDAO.selectByExample(parametros);
	}

	@Override
	public List<MotivoReposicion> listarMotivosReposicion() {
		// TODO Auto-generated method stub
		MotivoReposicionExample parametros = new MotivoReposicionExample();
		parametros.setOrderByClause("des_motivo_reposicion");
		return motivoReposicionDAO.selectByExample(parametros);
	}

	@Override
	public Marca getMarca(Long idMarca) {
		return marcaDAO.selectByPrimaryKey(idMarca);
	}

	@Override
	public Operador getOperador(String codProveedor) {
		return operadorDAO.selectByPrimaryKey(codProveedor);
	}

	@Override
	public Accesorio getAccesorio(Long idAccesorio) {
		return accesorioDAO.selectByPrimaryKey(idAccesorio);
	}

	@Override
	public CentroCosto getCentroCosto(String codCentroCosto) {
		return centroCostoDAO.selectByPrimaryKey(codCentroCosto);
	}

	@Override
	public List<CentroCosto> listarCentrosDeCostos(String codEmpresa) {
		// TODO Auto-generated method stub
		CentroCostoExample parametros = new CentroCostoExample();
		CentroCostoExample.Criteria criterios = parametros.createCriteria();
		criterios.andCodEmpresaEqualTo(codEmpresa);
		parametros.setOrderByClause("des_centro_costo");
		return centroCostoDAO.selectByExample(parametros);
	}

	@Override
	public CentroCosto getCentroCosto(String codEmpresa,
			String codCentroCostoEmpresa) {
		CentroCostoExample parametros = new CentroCostoExample();
		CentroCostoExample.Criteria criterios = parametros.createCriteria();
		criterios.andCodEmpresaEqualTo(codEmpresa);
		criterios.andCodCentroCostoEmpresaEqualTo(codCentroCostoEmpresa);
		List<CentroCosto> listaCentroCosto = centroCostoDAO.selectByExample(parametros);
		if(!CollectionUtils.isEmpty(listaCentroCosto)){
			return listaCentroCosto.get(0);
		}else{
			return null;
		}
	}
}







